<?php

class ClienteModel extends Model {
    
    const P_KEY = 'CPF';
    const T_NAME = 'Cliente';
    
    public static function Login($CPF, $Senha){
        $db = DB::getInstance();
        $StQuery = "SELECT * FROM \"Cliente\" WHERE \"CPF\" = '{$CPF}' AND \"Senha\" = MD5('{$Senha}')";
        $db->execute($StQuery);
        $Result = $db->fetchAll();
        $db->close();
        if(count($Result) == 0)
            return false;
        
        $Cliente = self::GetObjectsFromResult($Result);
        return $Cliente[0];
    }
    
    private static function GetObjectsFromResult($ArResult){
        $ArClientes = array();
        foreach($ArResult as $Result){
            $ArClientes[] = self::CreateCliente($Result);
        }
        return $ArClientes;
    }
    
    private static function CreateCliente($Result){
        $Cliente = new Cliente($Result['CPF']);
        $Cliente->setSenha($Result['Senha']);
        $Cliente->setNome($Result['Nome']);
        $Cliente->setEndereco($Result['Endereco']);
        $Cliente->setBairro($Result['Bairro']);
        $Cliente->setCEP($Result['CEP']);
        $Cliente->setTelResidencial($Result['TelResidencial']);
        $Cliente->setTelCelular($Result['TelCelular']);
        $Cliente->setEmail($Result['Email']);
        $Cliente->setDataDeNascimento($Result['DataDeNascimento']);
        $Cliente->setCidade(CidadeModel::GetByCodigo($Result['CodigoCidade']));
        return $Cliente;
    }
    
    public static function GetByCPF($CPF){
        $Cliente = null;
        $Result = parent::getByKey(self::T_NAME, self::P_KEY, $CPF, true);
        if(!empty($Result)){
            $Cliente = self::CreateCliente($Result);
        }
        return $Cliente;
    }
    
    public static function Save($CPF, $Nome, $Endereco, $Bairro, $CEP, $TelResidencial, $TelCelular, 
            $Email, $DataDeNascimento, $CodigoCidade, $Senha){
        $DataDeNascimento = Util::dateToSQL($DataDeNascimento);
        $db = DB::getInstance();
        $StQuery = 'INSERT INTO "Cliente"("CPF", "Nome", "Endereco", "Bairro", "CEP", "TelResidencial", 
                    "TelCelular", "Email", "DataDeNascimento", "CodigoCidade", "Senha") VALUES (';
        $StQuery .= "'$CPF', '{$db->escape($Nome)}', '{$db->escape($Endereco)}', '{$db->escape($Bairro)}', $CEP, ";
        $StQuery .= "'$TelResidencial', '$TelCelular', '$Email', '$DataDeNascimento', $CodigoCidade, MD5('$Senha'))";
        $db->execute($StQuery);
        return $db->affectedRows() > 0;
    }
    
}

?>
